//@author A0101906R
#ifndef LOGIC_H
#define LOGIC_H

#include <sstream>
#include <string>
#include <vector>
#include "CommonObjects.h"
#include "AllCmds.h"
#include "CmdParser.h"

//this is for debugging purposes only, please dont delete
//std::string executeProgramString(std::string userinput);

namespace Twentyfifth {
	class Logic {
	protected:
		static const std::string MESSAGE_ADD;
		static const std::string ERROR_UNDO;
		static const std::string ERROR_INVALID;

		StorageMgr storagemgr;
		Cmd* oldCmd;
		Cmd* newCmd;
		Cmd::CmdType newCmdType;
		Status::StatusCode oldStatusCode;
		Parser parserComponent;
	public:
		Logic();
		Status executeProgram(std::string userinput);
	};
}


#endif